package com.hzz.dto.user;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.hzz.framework.dto.BaseDto;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
import java.util.Set;

@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@ApiModel("组织架构 DTO")
public class OrgInfoDto extends BaseDto {
    /** id */
    Long id;
    /** 编码 */
	@Size(max=32,message="code最大32字符")
    String code;
    /** 类型 -1河长办 0业务部门 1联系部门  */
	@NotNull(message="type不能为空")
    Integer type;
    /** 名称 */
	@NotNull(message="name不能为空")@Size(max=100,message="name最大100字符")
    String name;
    /**
     * 父级id
     */
    Long parentId;
    /**
     * 机构职责
     */
    String duty;
    /**
     * 单位地址
     */
    @Size(max = 255, message = "address最大255字符")
    String address;
    /**
     * 单位电话
     */
    @Size(max = 25, message = "telphone最大25字符")
    String telphone;
    /**
     * 负责人
     */
    @Size(max = 85, message = "leadingCadre最大85字符")
    String leadingCadre;
    /**
     * 负责人电话
     */
    @Size(max = 255, message = "leadingCadreCallphone最大255字符")
    String leadingCadreCallphone;
    /**
     * 联系人
     */
    @Size(max = 25, message = "contacts最大25字符")
    String contacts;
    /**
     * 联系人电话
     */
    @Size(max = 25, message = "contactsCallphone最大25字符")
    String contactsCallphone;
    /**
     * 机构人员数量
     */
    Integer totalQuantity;
    /**
     * 行政区域id
     */
    @Size(max = 85, message = "areaId最大85字符")
    String areaId;
    /**
     * 行政区域名称
     */
    @Size(max = 255, message = "areaName最大255字符")
    String areaName;
    /**
     * 状态0禁用1启用
     */
    Integer state;
    /**
     * 备注
     */
    @Size(max = 255, message = "memo最大255字符")
    String memo;
    /**
     * 版本号
     */
    Integer version;
    /**
     * 排序
     */
    Integer orderNo;
    /**
     * 删除标记(0正常1删除)
     */
    Integer delFlag;
    /** 建立者id */
    Long createId;
    /** 创建时间 */
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateCreated;
    /** 更新时间 */
	@JSONField(format = "yyyy-MM-dd HH:mm:ss")
    Date dateUpdated;

	Long crtOrgId;
    /**
     * 员工所在机构列表
     */
    Set<Long> staffOrgNode;
    /**
     * 子对象集合
     */
    List<AuthPermDto> children;
    String text;
    Integer[] tags;

    public Integer[] getTags() {
        if (text != null) {
            return new Integer[]{children != null ? children.size() : 0};
        } else {
            return null;
        }
    }
}
